#pragma once

#include "instructions/base/instructions.h"
#include <memory>

namespace jvm {
namespace instructions {

class Frame;

class Ldc : public BaseIndex8Instruction {
public:
    void Execute(Frame& frame) override;
};

class LdcW : public BaseIndex16Instruction {
public:
    void Execute(Frame& frame) override;
};

class Ldc2W : public BaseIndex16Instruction {
public:
    void Execute(Frame& frame) override;
};

namespace detail {
void ExecuteLdc(Frame& frame, uint16_t index);
}

} // namespace instructions
} // namespace jvm